﻿

using IotContract.Dtos.Clients;
using IotContract.Models;
using IotContract.Models.Clients.Hks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XT.Common.Services;

namespace IotContract.Grpcs;
/// <summary>
/// 远程请求服务
/// </summary>
public interface IRemoteGrpcService: IGrpcCodeService
{
    /// <summary>
    /// 提交设备报警
    /// </summary>
    /// <param name="iotEquipWarnDto"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> CommitFireWarn(IotEquipWarnDto iotEquipWarnDto);
    /// <summary>
    /// 提交充放电结果
    /// </summary>
    /// <param name="result"></param>
    /// <returns>构造好的报文</returns>
    Task<GrpcReturn<string>> CommitChargeFMTResult(ChargeTrayResult result);
    /// <summary>
    /// 提交库位移动指令
    /// </summary>
    /// <param name="moveInstruct"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> CommitFmtMove(StageMoveInstruct moveInstruct);
    /// <summary>
    /// 获取组盘信息
    /// </summary>
    /// <param name="trayDefineInstruct"></param>
    /// <returns>状态，code,msg</returns>
    Task<GrpcReturn<TrayCellStatus>> GetTrayCellStatus(TrayDefineInstruct trayDefineInstruct);


    /// <summary>
    /// 提交OCV结果
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>

    Task<GrpcReturn<OCVCellMain>> CommitOcvResult(OCVTrayResult data);
    /// <summary>
    /// 获取复测配方
    /// </summary>
    /// <param name="hkWrite"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> GetReTestChargeFMT(HkWriteInstruct hkWrite);
    /// <summary>
    /// 获取充放电配方
    /// </summary>
    /// <param name="hkWrite"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> GetChargeFMTData(HkWriteInstruct hkWrite);
    /// <summary>
    /// 校验NG托盘
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> CheckNGResult(HkWriteInstruct data);
    /// <summary>
    /// 获取筛选机的电芯数据
    /// </summary>
    /// <param name="trayCode"></param>
    /// <returns></returns>
    Task<GrpcReturn<SelCellResult>> GetSelCellData(HkWriteInstruct data);
    /// <summary>
    /// 提交筛选结果
    /// </summary>
    /// <param name="trayCode"></param>
    /// <returns></returns>
    Task<GrpcReturn<string>> CommitSelResult(HkWriteInstruct data);
}
